home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / src / ConfigFileSrc.lha / ConfigFileSrc12 / Library / CF.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-10-02  |  2.7 KB  |  122 lines

  1. /*
  2. **        $PROJECT: ConfigFile.library
  3. **        $FILE: CF.h
  4. **        $DESCRIPTION: Main header file of the library.
  5. **
  6. **        (C) Copyright 1996-1997 Marcel Karas
  7. **             All Rights Reserved.
  8. */
  9.  
  10. #ifndef CF_H
  11. #define CF_H
  12.  
  13. //#define CF_FUNC_DEBUG    TRUE
  14. //#define CF_STEP_DEBUG    TRUE
  15. //#define CF_MEMA_DEBUG    TRUE
  16.  
  17. #define CF_MAX_STRLEN    220
  18.  
  19. #define CF_IDENT_LEN        4
  20. #define CF_IDENT_EXTLEN    5
  21. #define CF_IDENT            0x43464654L
  22.  
  23. /********* Memory Pools functions of the AmigaLib or Kick3.0+ *************/
  24.  
  25. //#define POOLS_V39 1
  26.  
  27. #ifdef CF_MEMA_DEBUG
  28.  
  29. #define MyAllocPooled(a,b)        DEBAllocPooled (a, b)
  30. #define MyCreatePool(a,b,c)    DEBCreatePool (a, b, c)
  31. #define MyDeletePool(a)            DEBDeletePool (a)
  32. #define MyFreePooled(a,b,c)    DEBFreePooled (a, b, c)
  33.  
  34. #else
  35.  
  36. #ifndef POOLS_V39
  37.  
  38. #define MyAllocPooled(a,b)        AsmAllocPooled (a, b, SysBase)
  39. #define MyCreatePool(a,b,c)    AsmCreatePool (a, b, c, SysBase)
  40. #define MyDeletePool(a)            AsmDeletePool (a, SysBase)
  41. #define MyFreePooled(a,b,c)    AsmFreePooled (a, b, c, SysBase)
  42.  
  43. #else
  44.  
  45. #define MyAllocPooled(a,b)        AllocPooled (a, b)
  46. #define MyCreatePool(a,b,c)    CreatePool (a, b, c)
  47. #define MyDeletePool(a)            DeletePool (a)
  48. #define MyFreePooled(a,b,c)    FreePooled (a, b, c)
  49.  
  50. #endif
  51.  
  52. #endif
  53.  
  54. /************************ Intern CF definitions ***************************/
  55.  
  56. typedef struct iCFHeader 
  57. {
  58.     ULONG                 OpenMode;
  59.     ULONG                 Length;
  60.     ULONG                 WBufLength;
  61.     ULONG                 Flags;
  62.     BPTR                 FileHandle;
  63.     struct MinList     GroupList;
  64.     ULONG                 PuddleSize;
  65.     APTR                 MemPool;            /* Private memory pool */
  66.     UBYTE                 ArryNum;
  67.     UBYTE                 ExtFlags;            /* CF intern flags */
  68. } iCFHeader;
  69.  
  70. /* Extra flags of the iCFHeader */
  71. #define CF_EFLG_ALREADY_READ    0x01
  72.  
  73. /* Extra flags for iCFGroup, iCFArgument, and iCFItem */
  74. #define CF_EFLG_EXTERN_STRING    0x01    /* The pointer in #?Node->Name must
  75.                                                     be extra freeing */
  76. #define CF_EFLG_REMOVED            0x02    /* The Node is removed */
  77.  
  78. typedef struct iCFGroup
  79. {
  80.     struct iCFGroup  *NextGrp;
  81.     struct iCFGroup  *LastGrp;
  82.     STRPTR               Name;
  83.     struct MinList       ArgList;
  84.     struct iCFHeader *Header;
  85.     UBYTE                    StructSize;        /* Size of the structure and the
  86.                                                     including string */
  87.     UBYTE                    ExtFlags;
  88.     UBYTE                    UnUsed;
  89. } iCFGroup;
  90.  
  91. typedef struct iCFArgument
  92. {
  93.     struct iCFArgument *NextArg;
  94.     struct iCFArgument *LastArg;
  95.     STRPTR                  Name;
  96.     struct MinList          ItemList;
  97.     struct iCFGroup     *GrpNode;
  98.     UBYTE                      StructSize;
  99.     UBYTE                      ExtFlags;
  100.     UBYTE                      UnUsed;
  101. } iCFArgument;
  102.  
  103. typedef struct iCFItem
  104. {
  105.     struct iCFItem         *NextItem;
  106.     struct iCFItem         *LastItem;
  107.     UBYTE                      SpecialType;
  108.     UBYTE                      Type;
  109.     union    {
  110.         STRPTR              String;
  111.         LONG                  Number;
  112.         ULONG                  Bool;
  113.         ULONG                  All;
  114.     } Contents;
  115.     struct iCFArgument *ArgNode;
  116.     UBYTE                      StructSize;
  117.     UBYTE                      ExtFlags;
  118.     UBYTE                      UnUsed;
  119. } iCFItem;
  120.  
  121. #endif /* CF_H */
  122.